
<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   
      <title>9.3.&nbsp;XML 解析</title>
      <link rel="stylesheet" href="../diveintopython.css" type="text/css">
      <link rev="made" href="mailto:f8dy@diveintopython.org">
      <meta name="generator" content="DocBook XSL Stylesheets V1.52.2">
      <meta name="keywords" content="Python, Dive Into Python, tutorial, object-oriented, programming, documentation, book, free">
      <meta name="description" content="Python from novice to pro">
      <link rel="home" href="../toc/index.html" title="Dive Into Python">
      <link rel="up" href="index.html" title="第&nbsp;9&nbsp;章&nbsp;XML 处理">
      <link rel="previous" href="packages.html" title="9.2.&nbsp;包">
      <link rel="next" href="unicode.html" title="9.4.&nbsp;Unicode">
   </head>
   <body>
      <table id="Header" width="100%" border="0" cellpadding="0" cellspacing="0" summary="">
         <tr>
            <td id="breadcrumb" colspan="5" align="left" valign="top">导航：<a href="../index.html">起始页</a>&nbsp;&gt;&nbsp;<a href="../toc/index.html">Dive Into Python</a>&nbsp;&gt;&nbsp;<a href="index.html">XML 处理</a>&nbsp;&gt;&nbsp;<span class="thispage">XML 解析</span></td>
            <td id="navigation" align="right" valign="top">&nbsp;&nbsp;&nbsp;<a href="packages.html" title="上一页: “包”">&lt;&lt;</a>&nbsp;&nbsp;&nbsp;<a href="unicode.html" title="下一页: “Unicode”">&gt;&gt;</a></td>
         </tr>
         <tr>
            <td colspan="3" id="logocontainer">
               <h1 id="logo"><a href="../index.html" accesskey="1">深入 Python :Dive Into Python 中文版</a></h1>
               <p id="tagline">Python 从新手到专家 [Dip_5.4b_CPyUG_Release]</p>
            </td>
            <td colspan="3" align="right">
               <form id="search" method="GET" action="http://www.google.com/custom">
                  <p><label for="q" accesskey="4">Find:&nbsp;</label><input type="text" id="q" name="q" size="20" maxlength="255" value=""> <input type="submit" value="搜索"><input type="hidden" name="domains" value="woodpecker.org.cn/diveintopython"><input type="hidden" name="sitesearch" value="www.woodpecker.org.cn/diveintopython"></p>
               </form>
            </td>
         </tr>
      </table>
      <!--#include virtual="/inc/ads" -->
      <div class="section" lang="zh_cn">
         <div class="titlepage">
            <div>
               <div>
                  <h2 class="title"><a name="kgp.parse"></a>9.3.&nbsp;<span class="acronym">XML</span> 解析
                  </h2>
               </div>
            </div>
            <div></div>
         </div>
         <div class="abstract">
            <p>正如我说的，实际解析一个 <span class="acronym">XML</span> 文档是非常简单的：只要一行代码。从这里出发到哪儿去就是你自己的事了。
            </p>
         </div>
         <div class="example"><a name="d0e23416"></a><h3 class="title">例&nbsp;9.8.&nbsp;载入一个 <span class="acronym">XML</span> 文档 (这次是真的)
            </h3><pre class="screen">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>from</span> xml.dom <span class='pykeyword'>import</span> minidom</span>                                          <a name="kgp.parse.1.1"></a><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">xmldoc = minidom.parse(<span class='pystring'>'~/diveintopython/common/py/kgp/binary.xml'</span>)</span>  <a name="kgp.parse.1.2"></a><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">xmldoc</span>                                                               <a name="kgp.parse.1.3"></a><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12">
<span class="computeroutput">&lt;xml.dom.minidom.Document instance at 010BE87C&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> xmldoc.toxml()</span>                                                 <a name="kgp.parse.1.4"></a><img src="../images/callouts/4.png" alt="4" border="0" width="12" height="12">
<span class="computeroutput">&lt;?xml version="1.0" ?&gt;
&lt;grammar&gt;
&lt;ref id="bit"&gt;
  &lt;p&gt;0&lt;/p&gt;
  &lt;p&gt;1&lt;/p&gt;
&lt;/ref&gt;
&lt;ref id="byte"&gt;
  &lt;p&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;\
&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;/p&gt;
&lt;/ref&gt;
&lt;/grammar&gt;</span></pre><div class="calloutlist">
               <table border="0" summary="Callout list">
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.1.1"><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">正如在<a href="packages.html" title="9.2.&nbsp;包">上一节</a>看到的，该语句从 <tt class="filename">xml.dom</tt> 包中导入 <tt class="filename">minidom</tt> 模块。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.1.2"><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">这就是进行所有工作的一行代码：<tt class="function">minidom.parse</tt> 接收一个参数并返回 <span class="acronym">XML</span> 文档解析后的表示形式。这个参数可以是很多东西；在本例中，它只是我本地磁盘上一个 <span class="acronym">XML</span> 文档的文件名。(你需要将路径改为指向下载的例子所在的目录。) 但是你也可以传入一个<a href="../file_handling/file_objects.html" title="6.2.&nbsp;与文件对象共事">文件对象</a>，或甚至是一个<a href="../html_processing/extracting_data.html#dialect.extract.urllib" title="例&nbsp;8.5.&nbsp;urllib 介绍">类文件对象</a>。这样你就可以在本章后面好好利用这一灵活性了。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.1.3"><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">从 <tt class="function">minidom.parse</tt> 返回的对象是一个 <tt class="classname">Document</tt> 对象，它是 <tt class="classname">Node</tt> 类的一个子对象。这个 <tt class="classname">Document</tt> 对象是联锁的 <span class="application">Python</span> 对象的一个复杂树状结构的根层次，这些 <span class="application">Python</span> 对象完整表示了传给 <tt class="function">minidom.parse</tt> 的 <span class="acronym">XML</span> 文档。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.1.4"><img src="../images/callouts/4.png" alt="4" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left"><tt class="function">toxml</tt> 是 <tt class="classname">Node</tt> 类的一个方法 (因此可以在从 <tt class="function">minidom.parse</tt> 中得到的 <tt class="classname">Document</tt> 对象上使用)。<tt class="function">toxml</tt> 打印出了 <tt class="classname">Node</tt> 表示的 <span class="acronym">XML</span>。对于 <tt class="classname">Document</tt> 节点，这样就会打印出整个 <span class="acronym">XML</span> 文档。
                     </td>
                  </tr>
               </table>
            </div>
         </div>
         <p>现在内存中已经有了一个 <span class="acronym">XML</span> 文档了，你可以开始遍历它了。
         </p>
         <div class="example"><a name="kgp.parse.gettingchildnodes.example"></a><h3 class="title">例&nbsp;9.9.&nbsp;获取子节点</h3><pre class="screen">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">xmldoc.childNodes</span>    <a name="kgp.parse.2.1"></a><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12">
<span class="computeroutput">[&lt;DOM Element: grammar at 17538908&gt;]</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">xmldoc.childNodes[0]</span> <a name="kgp.parse.2.2"></a><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12">
<span class="computeroutput">&lt;DOM Element: grammar at 17538908&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">xmldoc.firstChild</span>    <a name="kgp.parse.2.3"></a><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12">
<span class="computeroutput">&lt;DOM Element: grammar at 17538908&gt;</span></pre><div class="calloutlist">
               <table border="0" summary="Callout list">
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.2.1"><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">每个 <tt class="classname">Node</tt> 都有一个 <tt class="function">childNodes</tt> 属性，它是一个 <tt class="classname">Node</tt> 对象的列表。一个 <tt class="classname">Document</tt> 只有一个子节点，即 <span class="acronym">XML</span> 文档的根元素 (在本例中，是 <tt class="sgmltag-element">grammar</tt> 元素)。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.2.2"><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">为了得到第一个 (在本例中，只有一个) 子节点，只要使用正规的列表语法。回想一下，其实这里没有发生什么特别的；这只是一个由正规 <span class="application">Python</span> 对象构成的正规 <span class="application">Python</span> 列表。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.2.3"><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">鉴于获取某个节点的第一个子节点是有用而且常见的行为，所以 <tt class="classname">Node</tt> 类有一个 <tt class="function">firstChild</tt> 属性，它和<tt class="literal">childNodes[0]</tt>具有相同的语义。(还有一个 <tt class="function">lastChild</tt> 属性，它和<tt class="literal">childNodes[-1]</tt>具有相同的语义。)
                     </td>
                  </tr>
               </table>
            </div>
         </div>
         <div class="example"><a name="d0e23632"></a><h3 class="title">例&nbsp;9.10.&nbsp;<tt class="function">toxml</tt> 用于任何节点
            </h3><pre class="screen">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">grammarNode = xmldoc.firstChild</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> grammarNode.toxml()</span> <a name="kgp.parse.3.1"></a><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12">
<span class="computeroutput">&lt;grammar&gt;
&lt;ref id="bit"&gt;
  &lt;p&gt;0&lt;/p&gt;
  &lt;p&gt;1&lt;/p&gt;
&lt;/ref&gt;
&lt;ref id="byte"&gt;
  &lt;p&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;\
&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;/p&gt;
&lt;/ref&gt;
&lt;/grammar&gt;</span></pre><div class="calloutlist">
               <table border="0" summary="Callout list">
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.3.1"><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">由于 <tt class="function">toxml</tt> 方法是定义在 <tt class="classname">Node</tt> 类中的，所以对任何 <span class="acronym">XML</span> 节点都是可用的，不仅仅是 <tt class="classname">Document</tt> 元素。
                     </td>
                  </tr>
               </table>
            </div>
         </div>
         <div class="example"><a name="kgp.parse.childnodescanbetext.example"></a><h3 class="title">例&nbsp;9.11.&nbsp;子节点可以是文本</h3><pre class="screen">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">grammarNode.childNodes</span>                  <a name="kgp.parse.4.1"></a><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12">
<span class="computeroutput">[&lt;DOM Text node "\n"&gt;, &lt;DOM Element: ref at 17533332&gt;, \
&lt;DOM Text node "\n"&gt;, &lt;DOM Element: ref at 17549660&gt;, &lt;DOM Text node "\n"&gt;]</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> grammarNode.firstChild.toxml()</span>    <a name="kgp.parse.4.2"></a><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12">
<span class="computeroutput">

</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> grammarNode.childNodes[1].toxml()</span> <a name="kgp.parse.4.3"></a><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12">
<span class="computeroutput">&lt;ref id="bit"&gt;
  &lt;p&gt;0&lt;/p&gt;
  &lt;p&gt;1&lt;/p&gt;
&lt;/ref&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> grammarNode.childNodes[3].toxml()</span> <a name="kgp.parse.4.4"></a><img src="../images/callouts/4.png" alt="4" border="0" width="12" height="12">
<span class="computeroutput">&lt;ref id="byte"&gt;
  &lt;p&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;\
&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;xref id="bit"/&gt;&lt;/p&gt;
&lt;/ref&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> grammarNode.lastChild.toxml()</span>     <a name="kgp.parse.4.5"></a><img src="../images/callouts/5.png" alt="5" border="0" width="12" height="12">
<span class="computeroutput">

</span></pre><div class="calloutlist">
               <table border="0" summary="Callout list">
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.4.1"><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">查看 <tt class="filename">binary.xml</tt> 中的 <span class="acronym">XML</span> ，你可能会认为 <tt class="sgmltag-element">grammar</tt> 只有两个子节点，即两个 <tt class="sgmltag-element">ref</tt> 元素。但是你忘记了一些东西：硬回车！在<tt class="literal">'&lt;grammar&gt;'</tt>之后，第一个<tt class="literal">'&lt;ref&gt;'</tt>之前是一个硬回车，并且这个文本算作 <tt class="sgmltag-element">grammar</tt> 元素的一个子节点。类似地，在每个<tt class="literal">'&lt;/ref&gt;'</tt>之后都有一个硬回车；它们都被当作子节点。所以<tt class="literal">grammar.childNodes</tt>实际上是一个有5个对象的列表：3个 <tt class="classname">Text</tt> 对象和两个 <tt class="classname">Element</tt> 对象。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.4.2"><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">第一个子节点是一个 <tt class="classname">Text</tt> 对象，它表示在<tt class="literal">'&lt;grammar&gt;'</tt>标记之后、第一个<tt class="literal">'&lt;ref&gt;'</tt>标记之后的硬回车。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.4.3"><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">第二个子节点是一个 <tt class="classname">Element</tt> 对象，表示了第一个 <tt class="sgmltag-element">ref</tt> 元素。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.4.4"><img src="../images/callouts/4.png" alt="4" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">第四个子节点是一个 <tt class="classname">Element</tt> 对象，表示了第二个 <tt class="sgmltag-element">ref</tt> 元素。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.4.5"><img src="../images/callouts/5.png" alt="5" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">最后一个子节点是一个 <tt class="classname">Text</tt> 对象，表示了在<tt class="literal">'&lt;/ref&gt;'</tt>结束标记之后、<tt class="literal">'&lt;/grammar&gt;'</tt> 结束标记之前的硬回车。
                     </td>
                  </tr>
               </table>
            </div>
         </div>
         <div class="example"><a name="d0e23802"></a><h3 class="title">例&nbsp;9.12.&nbsp;把文本挖出来</h3><pre class="screen">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">grammarNode</span>
<span class="computeroutput">&lt;DOM Element: grammar at 19167148&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">refNode = grammarNode.childNodes[1]</span> <a name="kgp.parse.5.1"></a><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12">
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">refNode</span>
<span class="computeroutput">&lt;DOM Element: ref at 17987740&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">refNode.childNodes</span>                  <a name="kgp.parse.5.2"></a><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12">
<span class="computeroutput">[&lt;DOM Text node "\n"&gt;, &lt;DOM Text node "  "&gt;, &lt;DOM Element: p at 19315844&gt;, \
&lt;DOM Text node "\n"&gt;, &lt;DOM Text node "  "&gt;, \
&lt;DOM Element: p at 19462036&gt;, &lt;DOM Text node "\n"&gt;]</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">pNode = refNode.childNodes[2]</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">pNode</span>
<span class="computeroutput">&lt;DOM Element: p at 19315844&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput"><span class='pykeyword'>print</span> pNode.toxml()</span>                 <a name="kgp.parse.5.3"></a><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12">
<span class="computeroutput">&lt;p&gt;0&lt;/p&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">pNode.firstChild</span>                    <a name="kgp.parse.5.4"></a><img src="../images/callouts/4.png" alt="4" border="0" width="12" height="12">
<span class="computeroutput">&lt;DOM Text node "0"&gt;</span>
<tt class="prompt">&gt;&gt;&gt; </tt><span class="userinput">pNode.firstChild.data</span>               <a name="kgp.parse.5.5"></a><img src="../images/callouts/5.png" alt="5" border="0" width="12" height="12">
<span class="computeroutput">u'0'</span></pre><div class="calloutlist">
               <table border="0" summary="Callout list">
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.5.1"><img src="../images/callouts/1.png" alt="1" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">正如你在前面的例子中看到的，第一个 <tt class="sgmltag-element">ref</tt> 元素是 <tt class="literal">grammarNode.childNodes[1]</tt>，因为 childNodes[0] 是一个代表硬回车的 <tt class="classname">Text</tt> 节点。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.5.2"><img src="../images/callouts/2.png" alt="2" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left"><tt class="sgmltag-element">ref</tt> 元素有它自己的子节点集合，一个表示硬回车，另一个表示空格，一个表示 <tt class="sgmltag-element">p</tt> 元素，诸如此类。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.5.3"><img src="../images/callouts/3.png" alt="3" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left">你甚至可以在这里使用 <tt class="function">toxml</tt> 方法，尽管它深深嵌套在文档中。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.5.4"><img src="../images/callouts/4.png" alt="4" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left"><tt class="sgmltag-element">p</tt> 元素只有一个子节点 (在这个例子中无法看出，但是如果你不信，可以看看<tt class="literal">pNode.childNodes</tt>)，而且它是表示单字符<tt class="literal">'0'</tt>的一个 <tt class="classname">Text</tt> 节点。
                     </td>
                  </tr>
                  <tr>
                     <td width="12" valign="top" align="left"><a href="#kgp.parse.5.5"><img src="../images/callouts/5.png" alt="5" border="0" width="12" height="12"></a> 
                     </td>
                     <td valign="top" align="left"><tt class="classname">Text</tt> 节点的 <tt class="literal">.data</tt> 属性可以向你提供文本节点真正代表的字符串。但是字符串前面的<tt class="literal">'u'</tt>是什么意思呢？答案将自己专门有一部分来论述。
                     </td>
                  </tr>
               </table>
            </div>
         </div>
      </div>
      <table class="Footer" width="100%" border="0" cellpadding="0" cellspacing="0" summary="">
         <tr>
            <td width="35%" align="left"><br><a class="NavigationArrow" href="packages.html">&lt;&lt;&nbsp;包</a></td>
            <td width="30%" align="center"><br>&nbsp;<span class="divider">|</span>&nbsp;<a href="index.html#kgp.divein" title="9.1.&nbsp;概览">1</a> <span class="divider">|</span> <a href="packages.html" title="9.2.&nbsp;包">2</a> <span class="divider">|</span> <span class="thispage">3</span> <span class="divider">|</span> <a href="unicode.html" title="9.4.&nbsp;Unicode">4</a> <span class="divider">|</span> <a href="searching.html" title="9.5.&nbsp;搜索元素">5</a> <span class="divider">|</span> <a href="attributes.html" title="9.6.&nbsp;访问元素属性">6</a> <span class="divider">|</span> <a href="summary.html" title="9.7.&nbsp;Segue ">7</a>&nbsp;<span class="divider">|</span>&nbsp;
            </td>
            <td width="35%" align="right"><br><a class="NavigationArrow" href="unicode.html">Unicode&nbsp;&gt;&gt;</a></td>
         </tr>
         <tr>
            <td colspan="3"><br></td>
         </tr>
      </table>
      <div class="Footer">
         <p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004 <a href="mailto:mark@diveintopython.org">Mark Pilgrim</a></p>
         <p class="copyright">Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007 <a href="mailto:python-cn@googlegroups.com">CPyUG (邮件列表)</a></p>
      </div>
   </body>
</html>